
#include"compiler.hpp"
#include"runner.hpp"
#include"compile_run.hpp"
using namespace ns_compiler;
using namespace ns_runner;
using namespace  ns_compile_and_run;
#include <jsoncpp/json/json.h>
#include"../comm/httplib.h"
#include<err.h>
using namespace httplib;

void Usage(std::string proc)
{
    std::cerr<<"usage:"<<"\n\t"<<proc<<"port"<<std::endl;
}
int main(int argc,char* argv[])
{

     if(argc!=2)
     {
         Usage(argv[0]);
         return 1;
     }
    Server svr;
  svr.Post("/compile_and_run",[](const Request& req,Response& resp){
          std::string in_json=req.body;
          std::string out_json;
          if(!in_json.empty())
          {
           CompileAndRun::Start(in_json,&out_json);
           resp.set_content(out_json,"application/json;charset=utf-8");
          }
});
    svr.listen("0.0.0.0",atoi(argv[1]));

 return 0;
    
   
}